package com.swak.job;

import com.swak.annotation.Job;

/**
 * 对于 固定周期内的循环任务： 例如 微信的AccessToken 需要2小时内刷新
 * <p>
 * 设定有100000 个微信号，每5分钟刷新一组。则需要分为 24 - 1 组，保留 5分钟的有效期。
 * <p>
 * 每组需要执行完100000 / 23 = 4348 个微信号
 * <p>
 * 
 * 可以按照取余的方式将微信号先分组，每5分钟执行一组，这样不管数据量的大小都是平均的。
 * <p>
 * 每次统计调度完一组需要的时间来统计需要多少执行器
 * 
 * @author DELL
 */
@Job(cronExpression = "0 0/5 0 0 ?", dispatchMethod = "dispatch")
public class WechatJob {

	/**
	 * 任务分发
	 * 
	 * @param tasks
	 */
	public void dispatch(JobFragments fragments) {

		// 当前是第几组，每次执行此方式需要存储当前第几组可以根据调度次数来计算

		// 查找当前组有多少微信需要调度

		// 平均到 执行器上的微信数量， 后期可以配置执行器的权重。

		// 创建执行条件
	}
}
